﻿//#define _CRT_SECURE_NO_WARNINGS 1


#include<string>
#include<iostream>
using namespace std;

//给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回
//大数相加

//基础版
//class Solution {
//public:
//    string addStrings(string num1, string num2) 
//    {
//        int end1 = num1.size() - 1;;//从字符串尾部遍历
//        int end2 = num2.size() - 1;
//
//        int next = 0;//进位
//        string s;
//
//        while (end1 >= 0 || end2 >= 0 )//两个字符串都遍历完成才结束
//        {
//            int n1 = end1 >= 0 ? num1[end1--] - '0' : 0;//先判断下标是否合法，防止越界
//            int n2 = end2 >= 0 ? num2[end2--] - '0' : 0;
//
//            int ret = n1 + n2 + next;
//            next = ret / 10;
//            ret = ret % 10;
//
//            s.insert(0, 1, ret + '0');
//
//        }
//
//        if (next == 1)
//        {
//            s.insert(0, 1, '1');
//        }
//        return s;
//    }


//尾插优化版
//class Solution {
//public:
//    string addStrings(string num1, string num2)
//    {
//        int end1 = num1.size() - 1;;//从字符串尾部遍历
//        int end2 = num2.size() - 1;
//
//        int next = 0;//进位
//        string s;
//
//        while (end1 >= 0 || end2 >= 0)//两个字符串都遍历完成才结束
//        {
//            int n1 = end1 >= 0 ? num1[end1--] - '0' : 0;//先判断下标是否合法，防止越界
//            int n2 = end2 >= 0 ? num2[end2--] - '0' : 0;
//
//            int ret = n1 + n2 + next;
//            next = ret / 10;
//            ret = ret % 10;
//
//            s += ret + '0';//先尾插
//
//        }
//
//        if (next!=0)//防止丢失最后进位的数
//        {
//            s += next + '0';
//        }
//        
//        reverse(s.begin(), s.end());//再反转
//        return s;
//    }
//};

//扩容优化版
//class Solution {
//public:
//    string addStrings(string num1, string num2)
//    {
//        int end1 = num1.size() - 1;;//从字符串尾部遍历
//        int end2 = num2.size() - 1;
//
//        int next = 0;//进位
//
//        string s;
//        s.reserve(max(num1.size(), num2.size()) + 1);//直接一次扩容完成
//
//        while (end1 >= 0 || end2 >= 0)//两个字符串都遍历完成才结束
//        {
//            int n1 = end1 >= 0 ? num1[end1--] - '0' : 0;//先判断下标是否合法，防止越界
//            int n2 = end2 >= 0 ? num2[end2--] - '0' : 0;
//
//            int ret = n1 + n2 + next;
//            next = ret / 10;
//            ret = ret % 10;
//
//            s += ret + '0';//先尾插
//
//        }
//
//        if (next!=0)//防止丢失最后进位的数
//        {
//            s += next + '0';
//        }
//        
//        reverse(s.begin(), s.end());//再反转
//        return s;
//    }
//};


//﻿/* int main(int argc, char* argv[])
//
//{
//
//    string a = "hello world";
//
//    string b = a;
//
//    if (a.c_str() == b.c_str())
//
//    {
//
//        cout << "true" << endl;
//
//    }
//
//    else cout << "false" << endl;
//
//    string c = b;
//
//    c = "";
//
//    if (a.c_str() == b.c_str())
//
//    {
//
//        cout << "true" << endl;
//
//    }
//
//    else cout << "false" << endl;
//
//    a = "";
//
//    if (a.c_str() == b.c_str())
//
//    {
//
//        cout << "true" << endl;
//
//    }
//
//    else cout << "false" << endl;
//
//    return 0;
//
//}
//
//﻿int main()
//
//{
//
//    string str("Hello Bit.");
//
//    str.reserve(111);
//
//    str.resize(5);
//
//    str.reserve(50);
//
//    cout << str.size() << ":" << str.capacity() << endl;
//
//    return 0;
//
//}*/

//﻿int main(int argc, char* argv[])
//
//{
//
//    string strText = "How are you?";
//
//    string strSeparator = " ";
//
//    string strResult;
//
//    int size_pos = 0;
//
//    int size_prev_pos = 0;
//
//    while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)
//
//    {
//
//        strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//        cout << strResult << " ";
//
//        size_prev_pos = ++size_pos;
//
//    }
//
//    if (size_prev_pos != strText.size())
//    {
//
//        strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//        cout << strResult << " ";
//    }
//
//    cout << endl;
//    return 0;
//
//}


//编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

//不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
